Computer programs often rely on maintaining a set of invariants of the program state. When updating program state, the invariants are often temporarily violated. It is important that any attempted change of program state that temporarily violates the invariants either ensures that the resulting change maintains the invariants or ensures that the attempted change is completely undone.
Methods exist for returning program state to a previous state. Often these methods attempt to guarantee a series of properties to a programmer across a distributed environment or multiple threads. Typically, these solutions reduce runtime efficiency beyond those desirable for many applications, especially general purpose solutions. What is needed is program state reversion with a light weight and efficient runtime solution for general purpose programming languages.